package Demo3;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class ThreadDemo {
    /**
     * 第三种实现方法  特点：前两种都是无法获得线程的返回结果，第三种是可以获得多线程的运行结果的
     * 1. 创建一个类MyCallable 实现 Callable接口
     * 2. 重写call（是有返回值的，表示多线程运行的结果）
     * 3. 创建MyCallable的对象（表示多线程要执行的任务）
     * 4. 创建FutureTask对象（作用管理多线程运行结果）
     * 5. 创建Thread类的对象，并启动
     */

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyCallable mc = new MyCallable();

        // 创建FutureTask对象（作用管理多线程运行结果）
        FutureTask<Integer> ft = new FutureTask<>(mc);
        Thread thread = new Thread(ft);
        thread.start();
        // 获取线程返回结果
        System.out.println(ft.get());
    }


}
